#include <iostream>
#include <vector>
#include <unordered_map>
#include <string>
#include <algorithm>

using namespace std;

// https://leetcode.cn/problems/longest-palindrome-by-concatenating-two-letter-words/?envType=daily-question&envId=2025-05-25
// 2131.

class Solution {
public:
    int longestPalindrome(vector<string>& words) {
        unordered_map<string, int> recordMatchStr;
        int ans = 0;
        for (int i = 0; i < words.size(); i++)
        {
            string matchStr = words[i];
            if(recordMatchStr.find(matchStr) != recordMatchStr.end() && recordMatchStr[matchStr] != 0){
                ans += 4;
                --recordMatchStr[matchStr];
                continue;
            }
            reverse(matchStr.begin(), matchStr.end());
            ++recordMatchStr[matchStr];
        }
        for(auto itPair : recordMatchStr){
            if(itPair.first[0] == itPair.first[1] && itPair.second != 0){
                ans += 2;
                break;
            }
        }
        return ans;
    }
};

int main()
{
    return 0;
}